#pragma once

#pragma unmanaged

#include <BWSAL\SupplyManager.h>

#pragma managed

#include "..\AiBase.h"
#include "MacroTask.h"
#include "Interfaces\IBuildOrderManager.h"
#include "Interfaces\ITaskScheduler.h"

using namespace BroodWar;

namespace BroodWar
{
	namespace Addon
	{
		ref class MacroTask;
		ref class Task;
		ref class BuildOrderManager;
		ref class TaskScheduler;

		public ref class SupplyManager : public AiBase
		{
		internal:
			BWSAL::SupplyManager* instance;

			SupplyManager(BWSAL::SupplyManager* manager);
			~SupplyManager();
			!SupplyManager();

			static SupplyManager^ s_instance;
		public:
			static void Create(IBuildOrderManager^ buildOrderManager, ITaskScheduler^ taskScheduler);
			static property SupplyManager^ Instance { SupplyManager^ get(); }

			virtual void OnFrame() override;
		};
	}
}
